'''
Created on 2012-3-27

电话簿执行类
AddBook.py -list 查看所有用户
AddBook.py -find ab 查找张三的信息
AddBook.py -del  ab 删除张三的信息
AddBook.py -update    ab 133 23@163.com
AddBook.py -add  ab 133 23@163.com 增加ab的记录


打算采用转储的方式来实现此功能,不知道是否可以实现  ！！囧 ！！

数据结构搞错了，应该用dict的，结果用了list
@author: yasenagat
'''
import pickle as p
import sys
#from com.nagat.User import User

class User():
    '''
    用户类，保存电话本的每一个用户
    '''
    
    name = None
    tel = None
    email = None

    def __init__(self, name, tel, email):
        '''
        Constructor
        '''
        self.name = name
        self.tel = tel
        self.email = email

       

if __name__ == '__main__':
#    print(1)
    #pd=python.data缩写
    fileName = 'ab.pd'
    
    def save(ul):
         #打开文件,a=append增加的方式打开,b=byte二进制，转储必须是二进制,如果保存str成txt，可以不加b
        file = open(fileName, mode='wb')
    
        p.dump(ul, file)
    
        file.close()
    
    def clear():
        
        file = open(fileName, mode='wb')
    
        p.dump([], file)
    
        file.close()  
        print('清空地址簿成功!')  
    
    def list():
        
        file = open(fileName, mode='rb')
     
        ul = p.load(file)
        
        print('   姓名        电话            邮箱')
        for u in ul :
            
            print('   ' + u.name + '           ' + str(u.tel) + '   ' + u.email)
         
        file.close()
    
    def getList():
        file = open(fileName, mode='rb')
     
        ul = p.load(file)
        
        file.close()
        
        return ul
    
    
    def isCheck(name):
        '''true：有此用户 ；false：无此用户'''
        file = open(fileName, mode='rb')
        ul = p.load(file)
        
        for u in ul :
            if u.name == name:
#                print('已经由此用户')
                return True
                break 
        
        file.close()
        return False
       
    def find(name):
        
        file = open(fileName, mode='rb')
        ul = p.load(file)
        
        for u in ul :
            if u.name == name:
                return u
                break
        file.close()
            
    def add(u,ul):
        
        if isCheck(u.name):
            print('已经由此用户!')
            return False
        else:
            ul.append(u)
            return True
    
    def remove(name):
        ul = getList()
        c = 0
        for u in ul:
            if u.name == name:
                del ul[c]
                break
            
            c=c+1
            
        save(ul)
        print('删除成功!')
        
    def update(name,tel,email):
        
        if isCheck(name):
            ul = getList()
            c=0
            for u in ul:
                if u.name == name:
                    #先删除，在添加
                    del ul[c]
#                    print(ul)
                    ul.append(User(name,tel,email))
#                    print(ul)
                    break
                c=c+1
            save(ul);
            print('更新成功!')
        else:
            print('未找到此用户!')
  
        
        
#用户对象
#UserList = [User('张三', 13333333333, 'zs@163.com'), User('李四', 14444444444, 'ls@126.com'), User('王五', 15555555555, 'ww@126.com')]
#save(UserList)
#empty()
#u = getList()
#add(User('a1',134567879999,'123@126.com'),u)
#save(u)
#print(list())

#print(isCheck('a'))

#print(isCheck('张三1'))
#print(find('张三'))


#print(sys.argv)

#如果没有参数：显示help
if len(sys.argv)< 2:
    print('请输入:ab.py --help 查看帮助信息')
else:
    #查看第一个参数,去掉- ;-list
    ff = sys.argv[1]
    first = ff[1:]
#    print(first)
    if first == 'help':
        print('帮助信息如下：')
        print('该命令用户建立用户地址簿，可以适用window,linux/unix等平台')
        print('参数信息：')
        print('-help 帮助信息')
        print('-version 帮助信息')
        print('-add 添加用户')
        print('-del 删除用户')
        print('-clear 清空地址簿')
        print('-update 更新用户信息')
        print('-find 查找某用户')
        
    elif first == 'version':
        print('')
        print('Build version 1.0 by yasenagat')
        
    elif first == 'list':
        list()
    elif first == 'find':
#        ab.py -find aadf
        #取得find后面的参数
#        print(sys.argv[2])        u = find(sys.argv[2])
        if u == None:
            print('查无此人')
        else :
            print('   姓名        电话            邮箱')
            print('   ' + u.name + '           ' + str(u.tel) + '   ' + u.email)
    
    elif first == 'add':
        name = sys.argv[2]
        tel = sys.argv[3]
        email = sys.argv[4]
        ul = getList()
        if add(User(name,tel,email), ul):
            save(ul)
            print('保存成功')
        else :
            print('保存失败')
    elif first == 'del':
        name = sys.argv[2]
        remove(name)
    
    elif first =='update':
        name = sys.argv[2]
        tel = sys.argv[3]
        email = sys.argv[4]
        update(name, tel, email)
        
    elif first == 'clear':
        clear()
    
    else :
        print('error : '+ff+' 参数无效')
        print('请查看帮助信息')
   
    
   

    
    
    
